﻿using System.Collections;

namespace Gp.Scripts.Core
{
    public interface IUnitComponent
    {
        /// <summary>
        /// 当回合开始时会调用的函数，用于重写实现具体逻辑。
        /// </summary>
        /// <param name="state">回合的状态。原本用于标记回合的类型（进攻轮、防守轮），当前仅为占位</param>
        /// <returns>
        /// IEnumerator： 用于对应协程接口，以满足播放动画或行为序列的需求。
        /// (如：希望在回合开始前，使某个单位进行攻击。)<br/>
        /// 在所有序列都执行完毕后，才会开始真正的回合（如：在单位攻击后，玩家才能进行回合的操作）。
        /// </returns>
        public abstract IEnumerator OnTurnEnd();


        /// <summary>
        /// 当回合回合结束时会调用的函数，用于重写实现具体逻辑。
        /// </summary>
        /// <param name="state">回合的状态。原本用于标记回合的类型（进攻轮、防守轮），当前仅为占位</param>
        /// <returns>
        /// IEnumerator： 用于对应协程接口，以满足播放动画或行为序列的需求。
        /// (如：希望在回合开始前，使某个单位进行攻击。)<br/>
        /// 在所有序列都执行完毕后，才会开始真正的回合（如：在单位攻击后，玩家才能进行回合的操作）。
        /// </returns>
        public abstract IEnumerator OnTurnStart();
    }
}